#ifndef _WX_ABOUTDLG_H_
#define _WX_ABOUTDLG_H_

#include "wx/defs.h"
#include "wx/app.h"
#include "wx/icon.h"

class wxAboutDialogInfo {
  public:
    wxAboutDialogInfo() { }
    void SetName( const wxString& name ) { m_name = name; }
    wxString GetName() const{ return m_name.empty() ? wxTheApp->GetAppName() : m_name; }

    void SetVersion( const wxString& version ) { m_version = version; }
    bool HasVersion() const { return !m_version.empty(); }
    wxString GetVersion() const { return m_version; }
    void SetDescription( const wxString& desc ) { m_description = desc; }
    bool HasDescription() const { return !m_description.empty(); }
    wxString GetDescription() const { return m_description; }
    void SetCopyright( const wxString& copyright ) { m_copyright = copyright; }
    bool HasCopyright() const { return !m_copyright.empty(); }
    wxString GetCopyright() const { return m_copyright; }
    void SetLicence( const wxString& licence ) { m_licence = licence; }
    void SetLicense( const wxString& licence ) { m_licence = licence; }
    bool HasLicence() const { return !m_licence.empty(); }
    wxString GetLicence() const { return m_licence; }
    void SetIcon( const wxIcon& icon ) { m_icon = icon; }
    bool HasIcon() const { return m_icon.Ok(); }
    wxIcon GetIcon() const;
    void SetWebSite( const wxString& url, const wxString& desc = wxEmptyString ) {
      m_url = url;
      m_urlDesc = desc.empty() ? url : desc;
    }

    bool HasWebSite() const { return !m_url.empty(); }
    wxString GetWebSiteURL() const { return m_url; }
    wxString GetWebSiteDescription() const { return m_urlDesc; }
    void SetDevelopers( const wxArrayString& developers ) { m_developers = developers; }
    void AddDeveloper( const wxString& developer ) { m_developers.push_back( developer ); }
    bool HasDevelopers() const { return !m_developers.empty(); }
    const wxArrayString& GetDevelopers() const { return m_developers; }
    void SetDocWriters( const wxArrayString& docwriters ) { m_docwriters = docwriters; }
    void AddDocWriter( const wxString& docwriter ) { m_docwriters.push_back( docwriter ); }
    bool HasDocWriters() const { return !m_docwriters.empty(); }
    const wxArrayString& GetDocWriters() const { return m_docwriters; }
    void SetArtists( const wxArrayString& artists ) { m_artists = artists; }
    void AddArtist( const wxString& artist ) { m_artists.push_back( artist ); }
    bool HasArtists() const { return !m_artists.empty(); }
    const wxArrayString& GetArtists() const { return m_artists; }
    void SetTranslators( const wxArrayString& translators ) { m_translators = translators; }
    void AddTranslator( const wxString& translator ) { m_translators.push_back( translator ); }
    bool HasTranslators() const { return !m_translators.empty(); }
    const wxArrayString& GetTranslators() const { return m_translators; }
    bool IsSimple() const{ return !HasWebSite() && !HasIcon() && !HasLicence(); }
    wxString GetDescriptionAndCredits() const;
    wxString GetCopyrightToDisplay() const;
  private:
    wxString m_name,m_version,m_description,m_copyright,m_licence;
    wxIcon m_icon;
    wxString m_url,m_urlDesc;
    wxArrayString m_developers,m_docwriters,m_artists,m_translators;
};

 void wxAboutBox( const wxAboutDialogInfo& info );

#endif
